iT邦幫忙

2022 iThome 鐵人賽

DAY 13
1
自我挑戰組

Python and LINE Bot系列 第 13

[Day13] Flask 網站應用程式(下)

  • 分享至 

  • xImage
  •  

接續上篇的【五、使用模板】

  1. 傳送參數及變數給網頁檔

傳送參數:在路由中設定參數。 Ex:在 hello 網頁傳送 name 字串參數

@app.route('/hello/<string:name>')

render_template 中加入第二個參數

render_template('網頁檔案名稱', **locals())  # **locals()指傳送所有參數及區域變數

網頁檔中接收參數及變數的方法:

{{參數名稱}}

 
範例:改編於書本上的範例
https://ithelp.ithome.com.tw/upload/images/20220925/20151448tHortVKeZm.png
https://ithelp.ithome.com.tw/upload/images/20220925/20151448PDJH4iQbvP.png

網址輸入 127.0.0.1:5000/hello/peiiiii 顯示的結果
https://ithelp.ithome.com.tw/upload/images/20220925/20151448rLdgY8yuh5.png

 
3. 網頁檔使用靜態檔案

靜態檔案: 圖片、樣式檔案等等。一般會將靜態檔案放置在 static 資料夾中,使用檔案的語法:

{{ url_for('static', filename=靜態檔案名稱) }}

範例:
https://ithelp.ithome.com.tw/upload/images/20220925/20151448OEruuIJtls.png
https://ithelp.ithome.com.tw/upload/images/20220925/201514480F8K7bWZEO.png

執行後輸入 127.0.0.1:5000/hello/名字
https://ithelp.ithome.com.tw/upload/images/20220925/20151448D6Qx2OMxEl.png
 
 

六、Template語言

Template 模板有自己的語言,模板的組成:

名稱 說明 範例
變量 將傳送內容顯示在模板指定的位置 {{username}}
標籤 if 條件指令 {% if found %}
標籤 for 迴圈指令 {% for item in items %}
單行註解 註解文字 {#註解文字#}
文字 HTML 標籤或文字 <title>顯示的模板</title>
  1. 變量

變量就是要顯示的變數,可以是一般的變數,也可以是字典變數或串列。
{{變數}}{{字典變數.鍵}}{{串列.索引}} 語法來表示。

變量類型 Template 語法 Python 語法 說明
字典 {{dict1.name}} dict1[name] name 是字典的
串列 {{list1.0}} list1[0] list1 是串列
方法 {{obj1.show}} obj1.show() show() 是 obj1 物件的方法

範例:
https://ithelp.ithome.com.tw/upload/images/20220925/20151448fpSvRrU6dG.png
https://ithelp.ithome.com.tw/upload/images/20220925/20151448PdKTTVxohZ.png

執行後網址輸入 127.0.0.1:5000/variable
https://ithelp.ithome.com.tw/upload/images/20220925/20151448Mh8UrISYBY.png

  1. 標籤
    Template 模板的條件判斷( if )指令迴圈( for )指令 稱為標籤
     
    (1)單向判斷式

    語法為:

    {% if 條件 %}
       程式區塊
    {% endif %}
    

    舉例來說:成績大於 90 顯示優等

    {% if score >= 90 %}
       優等
    {% endif %}
    

(2)雙向判斷式

語法為:

{% if 條件 %}
   程式區塊
{% else %}
   程式區塊
{% endif %}

舉例來說:若成績大於 60 ,顯示及格,否則顯示不及格

{% if score >= 60 %}
   及格
{% else %}
   不及格
{% endif %}

(3)多向判斷式

語法為:

{% if 條件 %}
   程式區塊
{% elif 條件 %}
   程式區塊
{% elif 條件 %}
   程式區塊
   .
   .
   .
{% else %}
   程式區塊
{% endif %}

舉例來說:分數大於 90 顯示 A 級,分數介於 80-89 顯示 B 級,分數介於 70-79 顯示 C 級,分數介於 60-69 顯示 D 級,分數小於 60 顯示 F 級

{% if score >= 90 %}
   A
{% elif score >= 80 %}
   B
{% elif score >= 70 %}
   C
{% elif score >= 60 %}
   D
{% else %}
   F
{% endif %}

(4)for 迴圈指令

語法為:

{% for 變數 in 串列 %}
   程式區塊

舉例來說:宣告變數為 list1 的串列,以 for 迴圈顯示 list1

list1 = range(1,7)
{% for i in list1 %}
   {{i}},
{% endfor %}          #執行結果為 1, 2, 3, 4, 5, 6

 

 
 
 
 
 

參考資料:Python與LINE Bot機器人全面實戰特訓班-Flask最強應用


上一篇
[Day12] Flask 網站應用程式(中)
下一篇
[Day14] 安裝PostgreSQL資料庫
系列文
Python and LINE Bot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言